﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using RCA1._0.DAL_WS;


namespace RCA1._0
{
    public partial class ThanhVien : Form
    {

        

        public ThanhVien()
        {
            InitializeComponent();
        }
        public THANHVIENDTO thanhVien;
        public ChucDanhThanhVienDTO chucDanhThanhVien;
        //public THANHVIENDTO thvien;
        List<CONGTYDTO> dSachCongTy;
        List<THANHVIENDTO> dSachGioiTinh;
        List<THANHVIENDTO> gioiTinh;
        List<ChucDanhThanhVienDTO> dSachChucDanhThanhVien;
        private DAL_WSSoapClient wsDAL = new DAL_WSSoapClient();
        private void ThanhVien_Load(object sender, EventArgs e)
        {

            thanhVienSua = new THANHVIENDTO();
            //Lấy bảng danh sách tên công ty
            dSachCongTy = new List<CONGTYDTO>(wsDAL.GetDanhSachCongTy());

            //Lấy bảng danh sách giới tính thành viên
            dSachGioiTinh = new List<THANHVIENDTO>(wsDAL.GetDanhSachGioiTinhThanhVien());
            gioiTinh = new List<THANHVIENDTO>(wsDAL.GetLoaiGioiTinh());


            dSachChucDanhThanhVien = new List<ChucDanhThanhVienDTO>(wsDAL.GetDanhSachChucDanhThanhVien());

            //Thể hiện danh sách ra bảng
            cbbTenCongTy.DataSource = dSachCongTy;
            cbbTenCongTy.DisplayMember = "TenCongTy";
            cbbTenCongTy.ValueMember = "IDCongTy";

            cbbGioiTinh.DataSource = gioiTinh;
            cbbGioiTinh.DisplayMember = "GioiTinh";
            cbbGioiTinh.ValueMember = "IDThanhVien";


            //Thể hiện danh sách loại chức danh ra bảng chọn danh sách loại chức danh
            cbbChucDanh.DataSource = dSachChucDanhThanhVien;
            cbbChucDanh.DisplayMember = "TenChucDanhThanhVien";
            cbbChucDanh.ValueMember = "IDChucDanhThanhVien";


            //Thể hiện thông tin thành viên
            TheHienThongTinThanhVien();  
            
        }

        void TheHienThongTinThanhVien()
        {
          
            //Thể hiện thông tin công ty khi cell click từ form trang chủ

            txtTenThanhVien.Text = thanhVien.TenThanhVienThuong;
            txtTenThanhVienInHoa.Text = thanhVien.TenThanhVienInHoa;
            dtpNgaySinh.Text = thanhVien.NTNS.ToShortDateString();
            
            cbbGioiTinh.Text = thanhVien.GioiTinh;
            txtQuocTich.Text = thanhVien.QuocTich;
            txtDanToc.Text = thanhVien.DanToc;
            txtDiaChiThuongTru.Text = thanhVien.DiaChiThuongTru;
            txtNoiOHienTai.Text = thanhVien.NoiOHienTai;
            cbbTenCongTy.Text = LayTenCongTyTheoDanhSach(thanhVien.MaCongTy);
            cbbChucDanh.Text = LayChucDanhThanhVienTheoDanhSach(thanhVien.MaChucDanhThanhVien);
            txtSoCMND.Text = thanhVien.SoCMND;
            dtpNgayCapCMND.Text = thanhVien.NgayCapCMND.ToShortDateString();
            txtNoiCapCMND.Text = thanhVien.NoiCapCMND;
            txtTongGiaTriGopVon.Text = thanhVien.TongGiaTriGopVon.ToString();
            txtSoHuuVon.Text = thanhVien.SoHuuVon;
            txtPhanTramGopVon.Text = thanhVien.PhanTramGopVon.ToString();
            dtpThoiDiemGV.Text = thanhVien.ThoiDiemGopVon.ToShortDateString();

            //txtChucDanh.Text = thanhVien.ChucDanh;
            txtDienThoai.Text = thanhVien.DienThoai;
            txtEmail.Text = thanhVien.Email;
            txtWebsite.Text = thanhVien.Website;
        }

        String LayTenCongTyTheoDanhSach(int MaCongTy)
        {
            foreach (CONGTYDTO congTy in dSachCongTy)
                if (MaCongTy.Equals(congTy.IDCongTy) == true)
                    return congTy.TenCongTy;
            return null;
        }

        String LayChucDanhThanhVienTheoDanhSach(int MaChuDanhThanhVien)
        {
            foreach (ChucDanhThanhVienDTO chucDanhThanhVien in dSachChucDanhThanhVien)
                if (MaChuDanhThanhVien.Equals(chucDanhThanhVien.IDChucDanhThanhVien) == true)
                    return chucDanhThanhVien.TenChucDanhThanhVien;
            return null;
        }

        private void btnHoanTac_Click(object sender, EventArgs e)
        {
            //Gọi lại đối tượng Công Ty chưa bị thay đổi
            TheHienThongTinThanhVien();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            wsDAL.XoaThanhVien(thanhVien);
            MessageBox.Show("Đã xóa thành viên thành công");

            //Có sự thay đổi thông tin
            TrangChu.xetThayDoi_CongTy = 1;
            this.Close();
        }

        //Tạo mới đối tượng thành viên Sửa để lưu thông tin được thay đổi
        THANHVIENDTO thanhVienSua = null;
        //THANHVIENDTO thanhVienSua = new THANHVIENDTO();
        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            //Cập nhật thông tin thành viên lại mới
            thanhVienSua.IDThanhVien = thanhVien.IDThanhVien;
            thanhVienSua.TinhTrangThanhVien = thanhVien.TinhTrangThanhVien;
            wsDAL.SuaThanhVien(thanhVienSua);

            MessageBox.Show("Thông tin thành viên đã được cập nhật mới");
            
            thanhVien = wsDAL.TimTheoMaThanhVien(thanhVien.IDThanhVien);

            btnHoanTac.Enabled = false;
            btnCapNhat.Enabled = false;

            //Có sự thay đổi thông tin
            TrangChu.xetThayDoi_CongTy = 1;
            
        }
        
        //Thể hiện thay đổi Button Cập Nhật, Button Về Đầu
        void TheHienThayDoiThanhVien(bool thayDoi)
        {
            if (thayDoi == true)
            {
                btnHoanTac.Enabled = false;
                btnCapNhat.Enabled = false;
            }
            else
            {
                btnHoanTac.Enabled = true;
                btnCapNhat.Enabled = true;
            }
        }


         #region "Kiểm tra sự thay đổi thành viên so với ban đầu"

        //Kiểm tra sự thay đổi Tên thành viên so với ban đầu
        private void txtTenThanhVien_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.TenThanhVienThuong = txtTenThanhVien.Text;
            TheHienThayDoiThanhVien(thanhVienSua.TenThanhVienThuong.Equals(thanhVien.TenThanhVienThuong));
        }

        private void txtTenThanhVienInHoa_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.TenThanhVienInHoa = txtTenThanhVienInHoa.Text;
            TheHienThayDoiThanhVien(thanhVienSua.TenThanhVienInHoa.Equals(thanhVien.TenThanhVienInHoa));
        }

        private void dtpNgaySinh_ValueChanged(object sender, EventArgs e)
        {
            thanhVienSua.NTNS = dtpNgaySinh.Value.Date;
            TheHienThayDoiThanhVien(thanhVienSua.NTNS.Equals(thanhVien.NTNS));
        }

        private void cbbGioiTinh_SelectedIndexChanged(object sender, EventArgs e)
        {
            thanhVienSua.GioiTinh = cbbGioiTinh.Text;
            TheHienThayDoiThanhVien(thanhVienSua.GioiTinh.Equals(thanhVien.GioiTinh));
        }

        private void txtQuocTich_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.QuocTich = txtQuocTich.Text;
            TheHienThayDoiThanhVien(thanhVienSua.QuocTich.Equals(thanhVien.QuocTich));
        }

        private void txtDanToc_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.DanToc = txtDanToc.Text;
            TheHienThayDoiThanhVien(thanhVienSua.DanToc.Equals(thanhVien.DanToc));
        }

        private void txtDiaChiThuongTru_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.DiaChiThuongTru = txtDiaChiThuongTru.Text;
            TheHienThayDoiThanhVien(thanhVienSua.DiaChiThuongTru.Equals(thanhVien.DiaChiThuongTru));
        }

        private void txtNoiOHienTai_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.NoiOHienTai = txtNoiOHienTai.Text;
            TheHienThayDoiThanhVien(thanhVienSua.NoiOHienTai.Equals(thanhVien.NoiOHienTai));
        }

        private void cbbTenCongTy_SelectedIndexChanged(object sender, EventArgs e)
        {
            CONGTYDTO congTy = dSachCongTy[cbbTenCongTy.SelectedIndex];
            thanhVienSua.MaCongTy = congTy.IDCongTy;
            TheHienThayDoiThanhVien(thanhVienSua.MaCongTy.Equals(thanhVien.MaCongTy));
        }

        private void txtSoCMND_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.SoCMND = txtSoCMND.Text;
            TheHienThayDoiThanhVien(thanhVienSua.SoCMND.Equals(thanhVien.SoCMND));
        }

        private void txtNoiCapCMND_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.NoiCapCMND = txtNoiCapCMND.Text;
            TheHienThayDoiThanhVien(thanhVienSua.NoiCapCMND.Equals(thanhVien.NoiCapCMND));
        }

        private void dtpNgayCapCMND_ValueChanged(object sender, EventArgs e)
        {
            thanhVienSua.NgayCapCMND = dtpNgayCapCMND.Value.Date;
            TheHienThayDoiThanhVien(thanhVienSua.NgayCapCMND.Equals(thanhVien.NgayCapCMND));
        }

        private void txtTongGiaTriGopVon_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.TongGiaTriGopVon = double.Parse(txtTongGiaTriGopVon.Text);
            TheHienThayDoiThanhVien(thanhVienSua.TongGiaTriGopVon.Equals(thanhVien.TongGiaTriGopVon));
        }

        private void txtSoHuuVon_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.SoHuuVon = txtSoHuuVon.Text;
            TheHienThayDoiThanhVien(thanhVienSua.SoHuuVon.Equals(thanhVien.SoHuuVon));
        }

        private void txtPhanTramGopVon_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.PhanTramGopVon = double.Parse(txtPhanTramGopVon.Text);
            TheHienThayDoiThanhVien(thanhVienSua.PhanTramGopVon.Equals(thanhVien.PhanTramGopVon));
        }
      
        private void dtpThoiDiemGV_ValueChanged(object sender, EventArgs e)
        {
            thanhVienSua.ThoiDiemGopVon = dtpThoiDiemGV.Value.Date;
            TheHienThayDoiThanhVien(thanhVienSua.ThoiDiemGopVon.Equals(thanhVien.ThoiDiemGopVon));
        }

        private void txtDienThoai_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.DienThoai = txtDienThoai.Text;
            TheHienThayDoiThanhVien(thanhVienSua.DienThoai.Equals(thanhVien.DienThoai));
        }

        private void txtEmail_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.Email = txtEmail.Text;
            TheHienThayDoiThanhVien(thanhVienSua.Email.Equals(thanhVien.Email));
        }

        private void txtWebsite_TextChanged(object sender, EventArgs e)
        {
            thanhVienSua.Website = txtWebsite.Text;
            TheHienThayDoiThanhVien(thanhVienSua.Website.Equals(thanhVien.Website));
        }

        //private void txtChucDanh_TextChanged(object sender, EventArgs e)
        //{
        //    thanhVienSua.ChucDanh = txtChucDanh.Text;
        //    TheHienThayDoiThanhVien(thanhVienSua.ChucDanh.Equals(thanhVien.ChucDanh));
        //}

        #endregion


        #region "Sự kiện Gõ từ bàn phím - Kiểm tra ký tự nhập vào từ bàn phím"
        /*
         * Sự kiện Gõ từ bàn phím
         * Kiểm tra ký tự nhập vào từ bàn phím
         */
        private void txtPhanTramGopVon_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true; 
        }

        private void txtTongGiaTriGopVon_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true; 
        }

        private void txtSoCMND_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true; 
        }
                
        private void txtDienThoai_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true; 
        }


        #endregion


        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        
        
    }
}
